﻿import requests
import re
 
# 请求URL
url = 'https://maoyan.com/board/4'
 
# 请求头部，模拟浏览器请求
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
 
# 解析页面函数
def parse_html(html):
    # 使用正则表达式匹配电影信息
    pattern = re.compile(r'<p class="name"><a href=".*?" title="(.*?)" data-act="boarditem-click" data-val="{movieId:\\\d+}">(.*?)</a></p>.*?<p class="star">(.*?)</p>.*?<p class="releasetime">(.*?)</p>', re.S)
    items = re.findall(pattern, html)
    
    # 将匹配到的信息转换为字典格式
    for item in items:
        yield {
            '电影名称': item[1],
            '主演': item[2].strip(),
            '上映时间': item[3]
        }
 
# 保存数据函数
def save_data():
    # 打开文件准备写入
    f = open('maoyan_top100.txt', 'w', encoding='utf-8')
    
    # 分页爬取数据，每页10条
    for i in range(10):
        # 构建分页URL
        page_url = f'https://maoyan.com/board/4?offset={i*10}'
        
        # 发送HTTP请求获取页面内容
        response = requests.get(page_url, headers=headers)
        
        # 解析页面内容
        for item in parse_html(response.text):
            # 将信息写入文件
            f.write(str(item) + '\n')
    
    # 关闭文件
    f.close()
 
# 主函数
if __name__ == '__main__':
    save_data()

